package com.dubbo.mapper;

import com.dubbo.domain.Refund;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import tk.mybatis.mapper.common.Mapper;

import java.util.List;
import java.util.Map;

/**
 * 退货/换货mapper
 * @author chenluqiang
 * @date 2018年12月15日 上午10:17:29 
 *
 */
public interface RefundMapper extends Mapper<Refund>{
	
	/**
	 * 根据售后状态 获取列表
	 * @author chenluqiang
	 * @date 2018年12月17日 下午2:53:05 
	 * @param userId 
	 * @param type 类型 0=我的售后审核 1=我的售后申请 2=已完成
	 * @return
	 */
	List<Map<String, Object>> getRefundListByStatus(
            @Param("userId") String userId, @Param("type") Integer type
            , @Param("pageStart") Long pageStart, @Param("pageTotal") Long pageTotal, @Param("userType") Integer userType
    );
	/**
	 * 根据售后状态 统计 列表记录数
	 * @author chenluqiang
	 * @date 2018年12月17日 下午4:24:08 
	 * @param userId
	 * @param type
	 * @return
	 */
	Long getRefundListCountByStatus(@Param("userId") String userId, @Param("type") Integer type, @Param("userType") Integer userType);
	
	/**
	 * 获取售后详情信息
	 * @author chenluqiang
	 * @date 2018年12月18日 上午11:29:12 
	 * @param refundId
	 * @return
	 */
	@Select("SELECT " + 
			"	srd.id AS refundId, " + 
			"	srd.refundNum, " + 
			"	srd.orderNum, " + 
			"	srd.userId, " + 
			"	srd.userName, " + 
			"	srd.linkName, " + 
			"	srd.applyTime, " + 
			"	srd.totalPrice, " + 
			"	srd.agentPrice, " + 
			"	srd.traderPrice, " + 
			"	srd.count, " + 
			"	srd.type, " + 
			"	srd.cause, " + 
			"	srd.reason, " + 
			"	srd.`status` " + 
			"FROM " + 
			"	s_refund srd" +
			" WHERE srd.id = #{refundId}"
			)
	Map<String, Object> getRefundDetail(@Param("refundId") String refundId);
	
	/**
	 * 获取(退货/换货)原因
	 * @author wujunyuan
	 * @date 2018年12月27日  下午5:48:42
	 * @param status 0=退货原因 1=换货原因
	 * @return
	 */
	@Select("SELECT " + 
			"	srn.id AS reasonId , " + 
			"	srn.`name` AS reasonName " + 
			"FROM " + 
			"	s_reason srn " + 
			"WHERE " + 
			"	srn.`status` = #{status} " + 
			"ORDER BY srn.sort")
	List<Map<String, Object>> findReason(@Param("status") Integer status);
	
	
}